package com.shujia.scala

object Demo2Class {
  def main(args: Array[String]): Unit = {

    val stu = new Stu("002", "张三", 23, "男")

    println(stu)

    stu.print()

    stu.name = "java"

    stu.print()

    val p = new Person("001")
    println(p)

  }

}

// Person(_id: String)   默认构造函数
class Person(_id: String) {

  println("Person静态代码块")

  var id: String = _id

  // _  占位符   如果构面不赋值就是默认值
  var gender: String = _

  //重载构造函数
  def this(_id: String, _gender: String) = {
    //第一行需要先调用默认构造函数
    this(_id)
    println("Person重载构造函数")
    this.gender = _gender
  }


  //方法重写
  override def toString: String = {
    return "Person" + id
  }

}


/**
  * scala  定义一个类  指定构造函数
  *
  */

class Stu(_id: String, _name: String, _age: Int, _gender: String) extends Person(_id, _gender) {

  /**
    * 类{}  里面相当于静态代码块
    * 在创建对象的时候执行
    *
    * 一班进行初始化
    *
    */
  println("静态代码块")

  //属性
  var name: String = _name
  val age: Int = _age

  def print(): Unit = {
    println(name + "\t" + age + "\t" + id + "\t" + gender)
  }

  //重写父类方法
  override def toString: String = {
    return id + "\t" + name + "\t" + age + "\t" + gender
  }
}
